The invention relates generally to automatic estimation of a cost of a product and/or service, and deals more particularly with automatic estimation of an overall cost of a product and/or service when there are multiple components to the overall cost, and the cost of some of the components are interdependent on each other.
Often times a product or service consists of multiple components, such as parts that make up the product and tasks and tools that make up the service. For example, in a web hosting service business, servers and desktop computers need to be purchased or leased. This is the hardware cost of the service. Along with the hardware, software needs to be purchased or leased in order to run a hosting application. This is the software cost of the service. Level 1 support staff and Level 2 server support staff need to be hired as well. This is the labor cost of the service. Some other services need to be applied on the server. This is a service cost. The total amount of the hardware, software, service, and labor costs are the total cost of the web hosting service. In such a case, it is common that the costs of certain components affect the cost of other components, and this affect is a cascade effect. Some times, the costs of components affect the costs of other components in a circular manner. In such a case, when the cost of one component changes, it will affect the cost of other components which in turn affect the cost of the one component. In the foregoing web hosting service example, the labor cost, the software cost and the service cost depend on the hardware cost. Also, the service cost may also depend on the labor cost. Consequently, in a dependency graph, there is a circle formed with one edge pointing from the labor cost to the hardware cost, another edge pointing from the service cost to the labor cost, and another edge from the service cost to the hardware cost. This cost dependency graph is shown in FIG. 7. When the number of servers changes, the hardware cost changes, and therefore, the labor cost, the software cost and the service cost will also change accordingly. But, when the labor cost changes, the service cost changes again.
It has proven difficult and inefficient in the past to calculate the overall cost of a product and/or service when the costs of some of its components are dependent on the costs of other of its components. For example, the existing algorithms may require that the service cost be calculated twice (i.e. in two iterations) when the hardware cost changes. Also, after the initial calculation of cost is made, certain costs may change over time, and this requires additional calculations.
A known IBM Solution Advisor Global Edition (SAGE) program is an iterative costing tool (and is implemented in Visual Basic program language). The SAGE program utilizes a representation of a directed acyclic graph (DAG) which illustrates the cost dependencies of different components of the product and/or service. A graph is a DAG if it contains no directed cycles. A DAG has at least one root node. FIG. 1 illustrates an example of a prior art DAG. Each linking indicates that the cost of one of the components is dependent on the cost of another of the components. The source of each arrow indicates the cost dependent component, and the destination of each arrow indicates the cost “driving” component. In this example, the costs of components B, C and D depend on the cost of component A. The costs of components D, E and G depend on the cost of component B. The costs of components E and F depend on the cost of component C. The cost of component G depends on the cost of component D. The costs of components D and G depend on the cost of component E. The cost of component G depends on the cost of component F. The cost of component A depends on no other components. The cost dependencies are represented in a dependency list which lists the pairs of interrelated components and which component cost of each pair depends on the other component cost in the pair. When a component's cost is changed (by a factor outside of the costs of the other components), it triggers the recalculation of the cost of this component and all other components whose cost is dependent on this component as illustrated in the DAG. Because of some circular nature of the cost dependencies, the recalculation could require multiple iterations of calculations as follows: When the cost A changes, the costs of D, B and C need to be recalculated. If the cost D is calculated first and the cost B is calculated second, then because the cost of D also depends on the cost of B, when the cost of B changes, the calculated cost of D needs to be updated according to the change in the cost of B. Therefore, it requires two iterations of changes for the cost of D. Then when the cost of E changes, the cost of D needs to be updated again. Therefore, the calculation of the cost of D requires three iterations.
A known Depth-first search process comprises traversing or searching a tree or a graph by starting at a root node and exploring as far as possible along each node before backtracking. This algorithm does not specify which node is selected first. Usually it selects the left most node first. When this algorithm is applied to the foregoing example, the order of the first set of nodes is A, D and G. The order of the second set of nodes is B, D, G, E, D, and G. After the second traversal, the costs of D and G are calculated more than once, with three iterations of calculation for the cost of D and two iterations of calculation for the cost of G.
A known Breadth-first search process comprises traversing or searching a tree or a graph starting at a root node and exploring all the neighboring nodes. Then for each of those nearest nodes, the algorithm explores their unexplored neighbor nodes, and so on until it finds the goal. When applying this algorithm to the foregoing example, the order of the first set of nodes is A, D, B, and C. The order of the second set of nodes is G. The order of the third set of nodes is D, G, and E. The order of the fourth set of nodes is E and F. After the fourth traversal, the costs of D, G, and E are required to be calculated twice.
Other known processes for calculating the cost of a product and/or service are described in U.S. Pat. No. 6,330,552 B1 and U.S. patent application Publication US 2001/0027447 A1.
While the foregoing processes are effective, improvements can be made in the efficiency of the cost estimation.
An object of the present invention is to effectively estimate the cost of a product and/or service comprised of multiple components whose costs are dependent on each other.
Another object of the present invention is to efficiently provide the foregoing cost estimation.
Another object of the present invention is to provide the foregoing cost estimation with a single iteration of cost estimation.